// 定义需要计时的时间
var timeCount = 60
// 在global线程里创建一个时间源
let codeTimer = DispatchSource.makeTimerSource(queue: DispatchQueue.global())
// 设定这个时间源是每秒循环一次,立即开始
codeTimer.schedule(deadline: .now(), repeating: .seconds(1))
// 设定时间源的触发事件
codeTimer.setEventHandler(handler: {
// 每秒计时一次
timeCount = timeCount - 1
// 时间到了取消时间源
if timeCount <= 0 {
codeTimer.cancel()
}
// 返回主线程处理一些事件,更新UI等等
DispatchQueue.main.async {
}
})
// 启动时间源
codeTimer.resume()
// codeTimer.suspend()//定时器暂停;
// codeTimer.cancel()//定时器取消,会销毁;
// codeTimer.activate()//定时器开始激活 此方法需要在 iOS10以上才有
// codeTimer.resume()//定时器继续